<?php
// +----------------------------------------------------------------------
// | YotakuCMS
// +----------------------------------------------------------------------
// | Copyright (c) 2016 http://www.yotaku.cn All rights reserved.
// +----------------------------------------------------------------------
// | Author: Creatint <creatint@163.com> 
// +----------------------------------------------------------------------

namespace Home\Controller;
use User\Api\UserApi;

/**
 * 用户控制器
 * 包括用户中心，用户登录及注册
 */
class UserController extends HomeController {

     /* 用户中心首页 */
     public function index(){

     }

     /* 注册页面 */
     public function register($username = '', $password = '', $repassword = '', $email = '', $verify = ''){
          if(!C('USER_ALLOW_REGISTER')){
               $this->error('注册已关闭');
          }
          if(IS_POST){ //注册用户
               /* 检测验证码 */
               if(!check_verify($verify)){
                    $this->error('验证码输入错误！');
               }

               /* 检测密码 */
               if($password != $repassword){
                    $this->error('密码和重复密码不一致！');
               }

               /* 调用注册接口注册用户 */
               $User = new UserApi;
               $uid = $User->register($username, $password, $email);
               if(0 < $uid){ //注册成功
                    //TODO: 发送验证邮件
                    $this->success('注册成功！',U('login'));
               } else { //注册失败，显示错误信息
                    $this->error($this->showRegError($uid));
               }

          } else { //显示注册表单
               $this->display();
          }
     }

     /* 登录页面 */
     public function login($username = '', $password = '', $verify = ''){
          $type = USER_TYPE;
          if ( !$type ){
               echo 'Sorry, your don\'t have access to this site.';
               exit;
          }
          if(IS_POST){

               // 检测验证码
               if(!check_verify($verify)){
//				$this->error('验证码输入错误！');
               }

               // 调用UC登录接口登录
               $user = new UserApi;
               $uid = $user->login($username, $password);
               if(0 < $uid){
                    //UC登录成功
                    /* 登录用户 */
                    $Member = D('Member');
                    if($Member->login($uid)){ //登录用户
                         if('tmall' == USER_TYPE){
                              if(2 !=$uid) $this->error('天猫端账号未授权');
                         }elseif('agent' == USER_TYPE){
                              if(3 != $uid && 4 != $uid) $this->error('代理商账号未授权');
                         }
                         if( $type ){
                              if('agent' == $type)
                                   $this->success('登陆成功！',U("Home/{$type}/check",0));
                              if('tmall' == $type)
                                   $this->success('登陆成功！',U("Home/{$type}/give",0));
                              if('dealer' == $type)
                                   $this->success('登陆成功！',U("Home/{$type}/index",0));
                         }else{
                              // 用户类型不确定，强制退出
                              D('Member')->logout();
                              $this->error('非法登陆');
                         }
                    } else {
                         $this->error($Member->getError());
                    }

               } else { //登录失败
                    switch($uid) {
                         case -1: $error = '用户不存在或被禁用！'; break; //系统级别禁用
                         case -2: $error = '密码错误！'; break;
                         default: $error = '未知错误！'; break; // 0-接口参数错误（调试阶段使用）
                    }
                    $this->error($error);
               }

          } else {
               //显示登录页面
               $this->display();
          }
     }

     /* 退出登录 */
     public function logout(){
          if(empty(session('type')) && !empty(cookie('type'))){
               session('type',cookie('type'));
          }
          if(is_login()){
               D('Member')->logout();
               $this->success('退出成功！', U('User/login'));
          } else {
               $this->redirect('User/login');
          }
     }

     /* 验证码，用于登录和注册 */
     public function verify(){
          $verify = new \Think\Verify();
          $verify->entry(1);
     }

     /**
      * 获取用户注册错误信息
      * @param  integer $code 错误编码
      * @return string        错误信息
      */
     private function showRegError($code = 0){
          switch ($code) {
               case -1:  $error = '用户名长度必须在16个字符以内！'; break;
               case -2:  $error = '用户名被禁止注册！'; break;
               case -3:  $error = '用户名被占用！'; break;
               case -4:  $error = '密码长度必须在6-30个字符之间！'; break;
               case -5:  $error = '邮箱格式不正确！'; break;
               case -6:  $error = '邮箱长度必须在1-32个字符之间！'; break;
               case -7:  $error = '邮箱被禁止注册！'; break;
               case -8:  $error = '邮箱被占用！'; break;
               case -9:  $error = '手机格式不正确！'; break;
               case -10: $error = '手机被禁止注册！'; break;
               case -11: $error = '手机号被占用！'; break;
               default:  $error = '未知错误';
          }
          return $error;
     }


     /**
      * 修改密码提交
      * @author huajie <banhuajie@163.com>
      */
     public function profile(){
          $this->assign('controller',session('type'));
          $this->assign('action','profile');

          if ( !is_login() ) {
               $this->error( '您还没有登陆',U('Home/User/login/type/'.session('type')) );
          }
          if ( IS_POST ) {
               //获取参数
               $uid        =   is_login();
               $password   =   I('post.old');
               $repassword = I('post.repassword');
               $data['password'] = I('post.password');
               empty($password) && $this->error('请输入原密码');
               empty($data['password']) && $this->error('请输入新密码');
               empty($repassword) && $this->error('请输入确认密码');

               if($data['password'] !== $repassword){
                    $this->error('您输入的新密码与确认密码不一致');
               }
               $data['cleartext'] = $data['password'];

               $Api = new UserApi();
               $res = $Api->updateInfo($uid, $password, $data);
               if($res['status']){
                    $this->success('密码修改成功！', U('Home/User/login/type/'.session('type')),3);
               }else{
                    $this->error($res['info']);
               }
          }else{
               $this->display();
          }
     }

}
